<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>php学习笔记[036]</title>
<link href="css/style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div class="show"><span>036 正则表达式一原子</span></div>
<?php include 'include/top.php';?>
<div class="text">
<b>正则表达式</b>
<strong>定义：</strong>描述文字规则的语法。<br />
<strong>作用：</strong>分割，匹配，查找，替换。<br />
用到的两个函数<strong>preg_match</strong>和<strong>ereg</strong>，用法分别如下：<br />
<strong>preg_match(正则模块,处理内容,处理结果)</strong>基于perl语言基础，比较常用，规范。执行效率高。<br />
<strong>ereg(正则模块,处理内容,处理结果)</strong>基于posix语言基础（unix，script）<br />
</div>
<div class="text">
<b>正则表达式的元素</b>
主要包含下面3种<br />
1.<strong>原子:</strong>(普通字符：[<strong>a-z,A-Z,0-9,_,原子表,转义字符</strong>])正则内必须有原子<br />
2.<strong>元字符:</strong>(有特殊功能的字符：[<strong>#*^</strong>])正则内必须有原子<br />
3.<strong>模式修正符</strong>(系统内置的部分字符：[<strong>i,m,S,U</strong>])<br />
</div>

<DIV class="text">
<b>原子</b>
我们简单的把原子分为下面几类<br />
1.<strong>a-z A-Z _ 0-9</strong>  //最常见的字符<br />
2.<strong>(abc) (skd)</strong>  //用圆括号包含起来的单元符号，只有完全符合()内内容才匹配成功<br />
3.<strong>[abcs] [^abd]</strong>  //含有任意一个即表示匹配成功/不成功(^表示相反不包含)<br />
4.转义字符<br />
<strong>\d</strong>  包含所有数字<strong>[0-9]</strong><br />
<strong>\D</strong>  除所有数字外<strong>[^0-9]</strong><br />
<strong>\w</strong>  包含所有英文字符<strong>[a-zA-Z_0-9]</strong><br />
<strong>\W</strong>  除所有英文字符外<strong>[^a-zA-Z_0-9]</strong><br />
<strong>\s</strong>   包含空白区域如回车、换行、分页等 <strong>[\f\n\r]</strong><br />
我们举一个实例来说明这个函数和规则<br />
<div class="code">
&lt;?php<br />
$mode1='/\D/';// 使用preg_match时，正则表达式必须用//作为开始和结束的标记<br />
$mode2='/aba/';<br />
$mode3='/(121)/';<br />
$mode4='/[18acd]/';<br />
$str1='ababacdefghijkl12345abac';<br />
$str2='121121212145678910003215';<br />
function zz($mode,$str)<br />
{<br />
preg_match($mode,$str,$arr);<br />
print_r($arr);//输出匹配结果<br />
}<br />
zz($mode1,$str1);echo '&lt;br /&gt;';<br />
zz($mode2,$str1);echo '&lt;br /&gt;';<br />
zz($mode3,$str1);echo '&lt;br /&gt;';<br />
zz($mode4,$str1);echo '&lt;br /&gt;';<br />
zz($mode1,$str2);echo '&lt;br /&gt;';<br />
zz($mode2,$str2);echo '&lt;br /&gt;';<br />
zz($mode3,$str2);echo '&lt;br /&gt;';<br />
zz($mode4,$str2);echo '&lt;br /&gt;';<br />
?&gt; </div>
我们来看运行的效果
<div class="effect">
<?php
$mode1='/\D/';// 使用preg_match时，正则表达式必须用//作为开始和结束的标记
$mode2='/aba/';
$mode3='/(121)/';
$mode4='/[18acd]/';
$str1='ababacdefghijkl12345abac';
$str2='121121212145678910003215';
function zz($mode,$str)
	{
	preg_match($mode,$str,$arr);
	print_r($arr);//输出匹配结果
	}
zz($mode1,$str1);echo '<br />';
zz($mode2,$str1);echo '<br />';
zz($mode3,$str1);echo '<br />';
zz($mode4,$str1);echo '<br />';
zz($mode1,$str2);echo '<br />';
zz($mode2,$str2);echo '<br />';
zz($mode3,$str2);echo '<br />';
zz($mode4,$str2);echo '<br />';
?>
</div>
</DIV>

</body>
</html>
